package com.budayi.common.service;

import com.budayi.vo.PageInfo;

import java.util.List;
import java.util.Map;

/**
 * @author LIBOFEI
 * @ClassName CoreService
 * @Description 核心service
 * @date 2021/4/20 12:41
 * @Version 1.0
 **/
public interface CoreService<T>{

    /** *
     * 插入一条数据
     * @param t
     * @author LIBOFEI
     * @date 12:31 2021/4/20
     * @return java.lang.Long
     * @Version  1.0
     **/
    Long insertObject(T t);


    /** *
     * 从数据库中删除一个对象
     * @param id 对象主键
     * @author LIBOFEI
     * @date 12:02 2021/4/20
     * @return java.lang.Long
     * @Version  1.0
     **/
    Long deleteObjectByPrimaryKey(Object id);


    /** *
     * 删除
     * @param t 删除实体
     * @author LIBOFEI
     * @date 12:31 2021/4/20
     * @return java.lang.Long
     * @Version  1.0
     **/
    Long deleteObject(T t);



    /** *
     * 更新对象
     * @param t 更新的对象
     * @author LIBOFEI
     * @date 11:54 2021/4/20
     * @return java.lang.Long
     * @Version  1.0
     **/
    Long updateObjectByPrimaryKey(T t);


    /***
     * 更新对象状态
     * @param id 主键id
     * @param status 状态
     * @author LIBOFEI
     * @date 11:54 2021/4/20
     * @return java.lang.Long
     * @Version  1.0
     **/
    Long updateObjectStatusByPrimaryKeyAndStatus(Object id, int status);


    /** *
     * 根据主键查询
     * @param id
     * @author LIBOFEI
     * @date 14:03 2021/4/20
     * @return T
     * @Version  1.0
    **/
    T queryObjectByPrimaryKey(Object id);


    /** *
     * 根据条件查询
     * @param t 对象
     * @author LIBOFEI
     * @date 14:04 2021/4/20
     * @return
     * @Version  1.0
    **/
    List<T> queryObjectListByCondition(T t);

    /** *
     * 分页根据条件查询
     * @param pageInfo 分页对象
     * @param t 条件
     * @author LIBOFEI
     * @date 14:07 2021/4/20
     * @return java.util.List<T>
     * @Version  1.0
    **/
    List<T> queryPageInfoObjectListByCondition(PageInfo pageInfo, T t);



    /** *
     * 根据ids查询对象
     * @param ids id集合
     * @author LIBOFEI
     * @date 09:31 2021/12/2
     * @return java.util.List<T>
     * @Version  1.0
    **/
    List<T> queryObjectByIds(List<?> ids);



    /*** *
     * 根据ids查询map列表
     * @param ids
     * @author LIBOFEI
     * @date 09:32 2021/12/2
     * @return java.util.Map<java.lang.Long,T>
     * @Version  1.0
    **/
    Map<Long,T> queryObjectMapByIds(List<?> ids);
}
